import request from '@/utils/request'

/**
 * 预约管理相关API接口
 * 该模块提供预约列表查询、详情查询、新增、修改、删除、审核等功能
 */

/**
 * 查询预约列表
 * @param {Object} query - 查询参数
 * @param {number} query.pageNum - 页码
 * @param {number} query.pageSize - 每页数量
 * @param {string} [query.appointmentType] - 预约类型
 * @param {string} [query.status] - 状态
 * @param {string} [query.startTime] - 开始时间
 * @param {string} [query.endTime] - 结束时间
 * @returns {Promise} 返回预约列表数据
 */
export function listAppointment(query) {
  return request({
    url: '/business/appointment/list',
    method: 'GET',
    params: query
  })
}

/**
 * 查询预约详情
 * @param {string|number} applyId - 预约申请ID
 * @returns {Promise} 返回预约详情数据
 */
export function getAppointment(applyId) {
  return request({
    url: '/business/appointment/' + applyId,
    method: 'GET'
  })
}

/**
 * 删除预约
 * @param {string|number} applyId - 预约申请ID
 * @returns {Promise} 返回操作结果
 */
export function delAppointment(applyId) {
  return request({
    url: '/business/appointment/' + applyId,
    method: 'DELETE'
  })
}

/**
 * 新增预约
 * @param {Object} data - 预约数据
 * @param {string} data.appointmentType - 预约类型
 * @param {string} data.appointmentTime - 预约时间
 * @param {string} data.contactPerson - 联系人
 * @param {string} data.contactPhone - 联系电话
 * @param {string} [data.remark] - 备注
 * @returns {Promise} 返回操作结果
 */
export function addAppointment(data) {
  return request({
    url: '/system/appointment',
    method: 'POST',
    data: data
  })
}

/**
 * 修改预约
 * @param {Object} data - 预约数据
 * @param {string} data.applyId - 预约申请ID
 * @param {string} [data.appointmentType] - 预约类型
 * @param {string} [data.appointmentTime] - 预约时间
 * @param {string} [data.contactPerson] - 联系人
 * @param {string} [data.contactPhone] - 联系电话
 * @param {string} [data.remark] - 备注
 * @returns {Promise} 返回操作结果
 */
export function updateAppointment(data) {
  return request({
    url: '/system/appointment',
    method: 'PUT',
    data: data
  })
}

/**
 * 审核预约
 * @param {Object} data - 审核数据
 * @param {string|number} data.applyId - 预约申请ID
 * @param {string} data.status - 审核状态（通过/拒绝）
 * @param {string} [data.remark] - 审核备注
 * @returns {Promise} 返回操作结果
 */
export function auditAppointment(data) {
  return request({
    url: '/system/appointment/audit',
    method: 'POST',
    data: data
  })
}

/**
 * 导出预约
 * @param {Object} query - 查询参数
 * @param {string} [query.appointmentType] - 预约类型
 * @param {string} [query.status] - 状态
 * @param {string} [query.startTime] - 开始时间
 * @param {string} [query.endTime] - 结束时间
 * @returns {Promise} 返回文件流
 */
export function exportAppointment(query) {
  return request({
    url: '/system/appointment/export',
    method: 'GET',
    data: query
  })
}

/**
 * 扫码查验
 * @param {string} qrCode - 二维码内容
 * @returns {Promise} 返回查验结果
 */
export function scanAppointment(qrCode) {
  return request({
    url: '/system/appointment/scan/' + qrCode,
    method: 'GET'
  })
}

/**
 * 查询预约明细列表
 * @param {Object} query - 查询参数
 * @param {string|number} query.applyId - 预约申请ID
 * @param {number} [query.pageNum] - 页码
 * @param {number} [query.pageSize] - 每页数量
 * @returns {Promise} 返回预约明细列表
 */
export function listAppointmentDetails(query) {
  return request({
    url: '/system/appointment/details/list',
    method: 'GET',
    params: query
  })
}

/**
 * 提交抽检结果
 * @param {Object} data - 抽检结果数据
 * @param {string|number} data.applyId - 预约申请ID
 * @param {string} data.result - 抽检结果
 * @param {string} [data.details] - 详细结果
 * @returns {Promise} 返回操作结果
 */
export function submitInspection(data) {
  return request({
    url: '/system/appointment/submitInspection',
    method: 'POST',
    data: data
  })
}

/**
 * 获取预约统计信息
 * @returns {Promise} 返回预约统计数据
 */
export function getAppointmentStatistics() {
  return request({
    url: '/system/appointment/statistics',
    method: 'GET'
  })
}